Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TTRN-678: Viteによる書き直し・リファクタ #14

Open
wants to merge 58 commits into
base: main
Choose a base branch
from

Conversation

3c1u
Copy link

@3c1u 3c1u commented Jul 25, 2023

Close TTRN-678.

概要

注意: 問題の修正が必要なので、コードが問題なさそうならまたDraftに戻します。

image

  • create-react-app から Vite でのビルドへの見直し
  • デザインリニューアルに伴う再実装
  • ロジックをReduxに分離
  • ディレクトリ構造の整理
    • pages/ がルーティングとほぼ一致する形になるよう変更
    • Next.js等に移植しても変更が最小限になるようにする
  • 一般的なコーディングスタイルの適用
    • formの送信をonSubmitでハンドリング
    • inputをすべてcontrolledに
    • フォーム要素のlabel/id対応付け
    • 一部機能のコンポーネント化

補足事項

  • よくあるReact + Reduxのコードを想定
    • Redux (redux-toolkit)でロジックを書いているので、ユーザのスキルによっては読むのが難しいかもしれない
    • ↑実務ならこれくらいの分離度は普通かな...?などと思っている
    • redux-toolkit の悪いところ(redux-thunkの無駄なwrapによるエラーハンドリングの難しさ)をもろに受けているので、剥がしてしまうのも一つ
    • 行数も増えているので、認知負荷が高くなっている可能性もある
  • CSSスタイリングにはBEM(っぽいやつ)を採用
    • 普段BEMは使わないので、用法としてマズそうならご指摘お願いします
  • CSSはかなり冗長
    • コンポーネント化で済む部分も多いが、コンポーネント分けは最小限にやっている
    • 色などは変数化してあるが、ユーザには馴染みがないかもしれない?
  • TaskCreateForm はやや難しいかもしれない
    • UIステートが別れているのと、DOMが絡む処理を含んでいる

コード量比較

BEFORE

      12 src/App.js
       8 src/App.test.js
      23 src/authSlice.js
      24 src/components/Header.jsx
       0 src/const.js
      22 src/index.js
      77 src/pages/EditList.jsx
      93 src/pages/EditTask.jsx
     147 src/pages/Home.jsx
      46 src/pages/NewList.jsx
      76 src/pages/NewTask.jsx
       6 src/pages/NotFound.jsx
      52 src/pages/SignIn.jsx
      60 src/pages/SignUp.jsx
      13 src/reportWebVitals.js
      36 src/routes/Router.jsx
       5 src/setupTests.js
       7 src/store.js
     707 total

AFTER

      20 src/App.jsx
      15 src/components/BackButton.jsx
      84 src/components/Sidebar.jsx
     167 src/components/TaskCreateForm.jsx
      59 src/components/TaskItem.jsx
      27 src/hooks/useLogin.js
      18 src/hooks/useLogout.js
      27 src/hooks/useSignup.js
      11 src/icons/CheckIcon.jsx
      11 src/icons/ChevronIcon.jsx
      13 src/icons/ListIcon.jsx
      11 src/icons/PencilIcon.jsx
      13 src/icons/PlusIcon.jsx
      26 src/index.jsx
       7 src/pages/404.jsx
      25 src/pages/index.page.jsx
      72 src/pages/list/new/index.page.jsx
     115 src/pages/lists/[listId]/edit/index.page.jsx
      64 src/pages/lists/[listId]/index.page.jsx
     146 src/pages/lists/[listId]/tasks/[taskId]/index.page.jsx
      84 src/pages/signin/index.page.jsx
      96 src/pages/signup/index.page.jsx
      44 src/routes/Router.jsx
     109 src/store/auth/index.js
      12 src/store/index.js
     133 src/store/list/index.js
     159 src/store/task/index.js
      17 src/utils/handleThunkError.js
      30 src/vendor/axios.js
      15 vite.config.js
    1630 total

@3c1u 3c1u marked this pull request as ready for review August 1, 2023 02:39
@3c1u 3c1u self-assigned this Aug 1, 2023
Copy link
Contributor

@sugitlab sugitlab left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ask: Station1ではライブラリのバージョンアップを実施する内容になっており、その対象は React と React-router としてある。問題文を変更する想定か、package.jsonをあとで変更する想定か確認したいです。

@sugitlab
Copy link
Contributor

sugitlab commented Aug 7, 2023

memo:

CSSスタイリングにはBEM(っぽいやつ)を採用
色などは変数化してあるが、ユーザには馴染みがないかもしれない?

ここまでのRailwayでBEMもSaSSも扱ってるので大丈夫だと思います!! 💯

src/vendor/axios.js Outdated Show resolved Hide resolved
Comment on lines +22 to +27
"eslint": "^8.45.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-react": "^7.32.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.3",
"prettier": "^3.0.0",
Copy link
Contributor

@sugitlab sugitlab Aug 7, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ask: station2で eslint, prettier の導入があるのであとではずす想定かなと理解してます。

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

他が問題なさそうならインデントをわざと崩した後に除去する予定です

@3c1u
Copy link
Author

3c1u commented Aug 8, 2023

その対象は React と React-router としてある

明確に指定してあるなら落とした方が良さそうですね...(もしかするとReact 18のcreateRoot対応とreact-router v5→v6のAPI変更を意図していたりする...?)落としておきます

@3c1u 3c1u requested a review from sugitlab August 8, 2023 06:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants